package com.hqyj.pojo;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.Email;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 
 * </p>
 *
 * @author rock
 * @since 2022-12-07 05:14:05
 */
@Getter
@Setter
@TableName("user_info")
public class UserInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户编号
     */
    @TableId(value = "user_id", type = IdType.ASSIGN_UUID)
    private String userId;

    /**
     * 用户名
     */
    @TableField("user_name")
    @Size(min = 3, max = 6,message = "用户名长度必须是3到6位")
    @Pattern(regexp="^[A-Za-z]+$",message ="用户名必须是英文" )
    private String userName;

    /**
     * 用户密码
     */
    @TableField("user_pwd")
    @Size(min = 3, max = 40,message = "密码长度必须是3到40位")
    @Pattern(regexp="^[A-Za-z0-9]+$",message ="密码必须是英文和数字注册" )
    private String userPwd;

    /**
     * 加密盐值
     */
    @TableField("user_salt")
    private String userSalt;
    /**
     * 性别
     */
    @TableField("sex")
    private Integer sex;

    /**
     * 邮箱
     */
    @TableField("user_email")
    @Email(message = "邮箱格式不正确")
    private String userEmail;

    /**
     * 手机
     */
    @TableField("user_phone")
    @Pattern(regexp="^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$$",message ="手机格式不正确" )
    private String userPhone;

    /**
     * 生日
     * @DateTimeFormat是spring包里面的注解，作用是接收从页面传到后台的日期值
     * @JsonFormat是jackson包里面的注解，作用是从后台向前台传递日期值
     * 注：默认情况下timezone为GMT（即标准时区），而北京是在东八区，会造成差8小时,所以 timezone = “GMT+8
     */
    @TableField(value = "user_birthday")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date userBirthday;
    /**
     * 注册时间
     */
    @TableField(value = "regist_time",fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date registTime;

    /**
     *  角色id
     */
    @TableField("role_id")
    private Integer roleId;


}
